[英]Django: model ForeignKey from a ForeignKey
我想用 Django 做這樣的事情:
Model1 定義了幾種類型。
Model2 定義了一個名稱(Model2 的鍵)和 select 來自 Model1 的一種類型。
Model3 獲取Model2 中定義的名稱和類型,並定義其他變量。
我試過這個,但它不起作用:
class Model1(models.Model):
types = models.CharField(max_length=50)
class Model2(models.Model):
name = models.CharField(max_length=50)
types = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
class Model3(models.Model):
name = models.ForeignKey(Model2, on_delete=models.CASCADE,related_name='name')
types = models.ForeignKey(Model2, on_delete=models.CASCADE,related_name='types')
other = models.CharField(max_length=50)
Model3 中的“類型”不起作用。 ¿有什么想法或替代方案嗎? 謝謝!!
錯誤:
Reverse query name for 'Model3.name' clashes with field name 'Model2.name'.
HINT: Rename field 'Model2.name', or add/change a related_name argument to the definition for field 'Model3.name'.
Reverse accessor for 'Model3.types' clashes with field name 'Model2.types'.
HINT: Rename field 'Model2.types', or add/change a related_name argument to the definition for field 'Model3.types'.
正如@IgorMoraru所說,存儲兩個引用是沒有意義的。 您可以通過“通過” Model2
object 訪問它來獲取type
。實際上,建模應該如下所示:
class Model1(models.Model):
type = models.CharField(max_length=50)
class Model2(models.Model):
name = models.CharField(max_length=50)
type = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
class Model3(models.Model):
name = models.ForeignKey(Model2, on_delete=models.CASCADE)
other = models.CharField(max_length=50)
然后,您可以通過以下方式“通過”Model3 object 的Model2
Model3
關聯Model1
object:
my_model3.name.type
或者如果您希望將值存儲在type
字段中:
my_model3.name.type.type
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.