[英]Double Foreign Key in Django?
無論如何在Django中建模雙外鍵?
例如,如果我有表:audio,overlay,html和table:timeline_item,它有一個字段id,以及一個指定audio,overlay或html的字段類別......
有誰知道我會如何在Django中進行建模? 或者如果可能的話?
聽起來像是多態關聯。 也許你可以使用ContentTypes框架解決Django的泛型關系問題。
外鍵是兩個表之間的引用約束,因此您實際上不能有一列引用3個不同表上的3列。
請參閱: http : //en.wikipedia.org/wiki/Foreign_key
你覺得它有點不同,我相信代碼最好證明:
class Category(models.Model):
TYPES = (
('audio', 'audio'),
('overlay', 'overlay'),
('html', 'html'),
)
type = models.CharField(choices=TYPES)
class Audio(models.Model):
category = models.OneToOneField(Category)
additional_column_for_audio = models. ...
#...
# same for overlay and html
class Item(models.Model):
# id is automatically added
category = models.ForeignKey(Category)
然后你可以迭代項目並做這樣的事情:
{% for item in items %}
{% if item.category.type == "audio" %}
{{ item.category.audio.additional_column_for_audio }}
{% endif %}
{% endfor %}
我最終做的是使用這個: http : //docs.djangoproject.com/en/1.0/topics/db/models/#id7
在此之前,我正在使用類中定義的另一個方法,該方法需要2個外鍵,這些外鍵只是將字段字典映射到它們的類並返回該對象類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.