gpt4 book ai didi

Python 错误 : (fields. E304)字段的反向访问器与另一个字段的反向访问器冲突

转载 作者:行者123 更新时间:2023-12-01 00:23:33 25 4
gpt4 key购买 nike

下面是我在 Django 项目中的 models.py 文件。每当我尝试运行该项目时,都会收到以下错误。请帮忙,因为我刚刚开始学习 django我尝试按照错误的建议更改外部列的名称,但无济于事。很多答案都建议对 related_name 进行更改,但在我的案例中不存在。

控制台错误

app_fin.TblLockerCoutCin.jewel_item: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item_code'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item' or 'TblLockerCoutCin.jewel_item_code'. app_fin.TblLockerCoutCin.jewel_item: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item_name'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item' or 'TblLockerCoutCin.jewel_item_name'. app_fin.TblLockerCoutCin.jewel_item_code: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item_code' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item_code' or 'TblLockerCoutCin.jewel_item'. app_fin.TblLockerCoutCin.jewel_item_code: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item_code' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item_name'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item_code' or 'TblLockerCoutCin.jewel_item_name'. app_fin.TblLockerCoutCin.jewel_item_name: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item_name' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item_name' or 'TblLockerCoutCin.jewel_item'. app_fin.TblLockerCoutCin.jewel_item_name: (fields.E304) Reverse accessor for 'TblLockerCoutCin.jewel_item_name' clashes with reverse accessor for 'TblLockerCoutCin.jewel_item_code'. HINT: Add or change a related_name argument to the definition for 'TblLockerCoutCin.jewel_item_name' or 'TblLockerCoutCin.jewel_item_code'.

模型.py

from django.db import models


class TblJewelleryInventory(models.Model):
id = models.IntegerField(primary_key=True)
item_code = models.CharField(unique=True, max_length=5, blank=True, null=True)
item_name = models.CharField(max_length=250, blank=True, null=True)
base_locker_location = models.CharField(max_length=45, blank=True, null=True)
updated_at = models.DateTimeField()
created_at = models.DateTimeField()

def __str__(self):
return self.name

class Meta:
managed = False
db_table = 'tbl_jewellery_inventory'


class TblJewelleryInventoryLogs(models.Model):
id = models.IntegerField(primary_key=True)
item_id = models.IntegerField()
item_code = models.CharField(unique=True, max_length=5, blank=True, null=True)
item_name = models.CharField(max_length=250, blank=True, null=True)
base_locker_location = models.CharField(max_length=45, blank=True, null=True)
updated_at = models.DateTimeField()
created_at = models.DateTimeField()
triggered_at = models.DateTimeField()

def __str__(self):
return self.name

class Meta:
managed = False
db_table = 'tbl_jewellery_inventory_logs'


class TblLockerCoutCin(models.Model):
jewel_item = models.ForeignKey(TblJewelleryInventory, models.DO_NOTHING)
jewel_item_code = models.ForeignKey(TblJewelleryInventory, models.DO_NOTHING, db_column='jewel_item_code')
jewel_item_name = models.ForeignKey(TblJewelleryInventory, models.DO_NOTHING, db_column='jewel_item_name')
reason = models.CharField(max_length=500, blank=True, null=True)
is_check_out = models.IntegerField(blank=True, null=True)
is_check_in = models.IntegerField(blank=True, null=True)
created_at = models.DateTimeField(blank=True, null=True)

def __str__(self):
return self.name
class Meta:
managed = False
db_table = 'tbl_locker_cout_cin'

最佳答案

在您的 TblLockerCoutCin 模型中,jewel_item_codejewel_item_name 字段与 TblJewelleryInventory 具有多对一关系。 code> 模型(特别是 pk 字段)。因此,当 TblJewelleryInventory 的实例尝试遍历任一字段的反向关系时,它会在这两种情况下尝试使用 tbllockercoutcin_set ,这将导致由于两个反向关系都用相同的名称来引用,因此存在歧义。

在本例中,您希望使用 lated_name 参数并为字段设置不同的访问器名称,例如:

jewel_item_code = models.ForeignKey(
TblJewelleryInventory,
on_delete=models.DO_NOTHING,
related_name='jewel_item_code', # Here
db_column='jewel_item_code',
)
jewel_item_name = models.ForeignKey(
TblJewelleryInventory,
on_delete=models.DO_NOTHING,
related_name='jewel_item_name', # Here
db_column='jewel_item_name',
)

关于Python 错误 : (fields. E304)字段的反向访问器与另一个字段的反向访问器冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58788480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com