![](/img/trans.png)
[英]auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserManage.groups'
[英]Python Error : (fields.E304) Reverse accessor for field clashes with reverse accessor for another field
下面是我在 Django 項目中的 models.py 文件。 每當我嘗試運行該項目時,都會出現以下錯誤。 請協助,因為我剛剛開始使用 django 我嘗試按照錯誤提示更改外部列的名稱,但無濟於事。 那里的很多答案都建議對我的案例中不存在的相關名稱進行更改。
來自控制台的錯誤
app_fin.TblLockerCoutCin.jewel_item:(fields.E304)“TblLockerCoutCin.jewel_item”的反向訪問器與“TblLockerCoutCin.jewel_item_code”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item”或“TblLockerCoutCin.jewel_item_code”的定義中添加或更改related_name 參數。 app_fin.TblLockerCoutCin.jewel_item:(fields.E304)“TblLockerCoutCin.jewel_item”的反向訪問器與“TblLockerCoutCin.jewel_item_name”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item”或“TblLockerCoutCin.jewel_item_name”的定義中添加或更改related_name 參數。 app_fin.TblLockerCoutCin.jewel_item_code:(fields.E304)“TblLockerCoutCin.jewel_item_code”的反向訪問器與“TblLockerCoutCin.jewel_item”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item_code”或“TblLockerCoutCin.jewel_item”的定義中添加或更改related_name 參數。 app_fin.TblLockerCoutCin.jewel_item_code:(fields.E304)“TblLockerCoutCin.jewel_item_code”的反向訪問器與“TblLockerCoutCin.jewel_item_name”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item_code”或“TblLockerCoutCin.jewel_item_name”的定義中添加或更改相關名稱參數。 app_fin.TblLockerCoutCin.jewel_item_name:(fields.E304)“TblLockerCoutCin.jewel_item_name”的反向訪問器與“TblLockerCoutCin.jewel_item”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item_name”或“TblLockerCoutCin.jewel_item”的定義中添加或更改related_name 參數。 app_fin.TblLockerCoutCin.jewel_item_name:(fields.E304)“TblLockerCoutCin.jewel_item_name”的反向訪問器與“TblLockerCoutCin.jewel_item_code”的反向訪問器沖突。 提示:在“TblLockerCoutCin.jewel_item_name”或“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
model 中, jewel_item_code
和jewel_item_name
字段都與TblJewelleryInventory
model(特別是pk
字段)具有多對一的關系。 因此,當TblJewelleryInventory
的實例嘗試遍歷任何一個字段的反向關系時,它會嘗試在兩種情況下都使用tbllockercoutcin_set
——這會導致歧義,因為兩個反向關系都由相同的名稱引用。
在這種情況下,您希望使用related_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',
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.