我需要在两个不同模型的模型类中放置两个外键。我想将第三个模型类与第一个和第二个相关联。
我尝试过这样的事情:
class A (models.Model)
id_A = models.IntergerField (primary_key=True)
#...
class B (models.Model)
id_B = models.IntergerField (primary_key=True)
#...
class C (models.Model)
id_A = models.ForeignKey(A)
id_B = models.ForeignKey(B)
阅读我理解的文档是不可能有MultipleColumnPrimaryKeys ...但我没有从django收到任何错误与此models.py
有可能吗?有更聪明的方法吗?
谢谢!
答案 0 :(得分:1)
你做得很好,如果你将id_A和id_B与同一个模型联系起来,django会给你一个错误,在这种情况下只需将$scope.$apply()
属性放在第二个字段中。
答案 1 :(得分:1)
您可以使用自动为您创建该中间模型的多对多关系:
.button:default {
-fx-base: #ececec;
}
有了这个,你可以做到这两点:
from django.db import models
class Publication(models.Model):
title = models.CharField(max_length=30)
class Article(models.Model):
headline = models.CharField(max_length=100)
publications = models.ManyToManyField(Publication, related_name='articles')
的文档
如果您需要使用该中间模型中的任何其他字段,您可以告诉django这样的publication.articles.all() # Gives you the articles of the current publication instance
article.publications.all() # Gives you the publications of the current article instance
模型:
through
查看extra fields on many to many
的文档此外,如果您要使用标准整数自动增量主键,django已经为您生成了一个,因此您不需要定义from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
和id_A
。
答案 2 :(得分:0)
Django没有弹出错误,因为你做得对。在一个模型中有多个外键是完全合理的,就像C类一样。
在C类中,只要id_A和id_B是他们自己模型的单列主键,就可以完美地解决问题。
" MultipleColumnPrimaryKeys"你提到的是另一回事。这意味着对于数据库中的特定表,有多个列一起成为表的主键,Django不支持。