【发布时间】:2013-03-21 13:20:42
【问题描述】:
我正在制作一个基于浏览器的小型游戏,同时尝试学习 Django。我有很多模型都可以有与之关联的“项目”。
这是可以包含项目的模型之一:
class Bank(models.Model):
user = models.ForeignKey(User, unique=True)
cash = models.IntegerField()
我的 Item 类具有通用关系,因此它可以与我的任何需要包含项目的模型相关联。它还具有用户的 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')
我的问题是如何获取当前与银行关联的项目列表(或我可以拥有项目的任何其他模型)?
使用泛型关系是实现此目的的好方法吗?使用多对多关系来做这样的事情会更容易(甚至可能)吗?
我想避免在我的模型中使用可以包含项目的实际 GenericRelation 字段,因为如果我删除了项目,这会删除模型。这个想法是项目是临时的,但具有项目的模型是永久的。
感谢您抽出宝贵时间阅读和回答!
【问题讨论】:
-
您的
Item和Bank与User相关,但与它们本身无关。因此,有一些方法可以为用户获取所有银行和用户的所有项目。但如果您希望Item与Bank直接相关,您可以引入关系。例如。ForeignKey或ManyToManyField取决于您希望如何关联它们。
标签: django django-models generic-relationship