我在嘗試學習Django時正在製作一個基於瀏覽器的小遊戲。我有許多模型都可以有與他們相關的「項目」。如何使用通用關係檢索與模型相關的所有項目?
這裏是一個可以包含項目的車型之一:
class Bank(models.Model):
user = models.ForeignKey(User, unique=True)
cash = models.IntegerField()
我的項目類有一個通用的關係,所以它可以與任何我的模型需要包含的項目有關。它也有一個ForeignKey用戶,因爲每個項目都必須由用戶擁有:
class Items(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
description = models.TextField()
itemType = models.CharField(max_length=50)
stats = models.CommaSeparatedIntegerField(max_length=100)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
我的問題是如何能得到當前與銀行相關的項目清單(或任何我的其他車型那可以有物品)?
使用泛型關係是一種很好的方法來做到這一點?使用ManyToMany關係來做這樣的事情會更容易(甚至可能)嗎?
我想避免在我的模型中使用實際的GenericRelation字段,該字段可能包含項目,因爲如果刪除了該項目,會刪除該模型。想法是這些物品是暫時的,但是具有物品的模型是永久性的。
感謝您花時間閱讀和回答!
你的'Item'和'Bank'與'User'有關,但不是它們自己。因此有辦法爲用戶提取所有銀行,併爲用戶提取所有項目。但是如果你想讓'Item'與'Bank'直接相關,你可以引入一個關係。例如。 'ForeignKey'或'ManyToManyField',這取決於你想如何關聯它們。 –