我在尝试学习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',这取决于你想如何关联它们。 –