django模型将类别添加到对象

时间:2012-10-26 23:02:20

标签: python django web

class Venues(models.Model):
        ..........
        ..........
        category=models.ForeignKey(Category)


class Category(models.Model):
     club=models.CharField()
     bar=models.CharField()
     adult=models.CharField()

这些是我的模特。我是一个django新手所以请原谅这个相当简单的问题。我希望每个Venue对象都有一个从类别列表中选择的类别(即俱乐部,酒吧或成人)。所以每个类别 - 俱乐部,酒吧,成人 - 都可以有很多场地,但就像我说每个场地都有一个类别。

所以我完全接近我想要完成的事情,或者这完全错了?请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

您的Category可能有一个名为type的字段,该字段可以是'club','bar','adult'字符串。你也可以让一个带有char字段的Venue并给它一组固定的choices。因此,正如您所看到的,已经有几种方法可以解决您设置数据库的方式。场地可以有多个类别吗?如果是这样,您可能想要使用manytomany字段。 我认为如果您想添加一个新类别,您需要在代码中手动添加它,其中一个问题就在于此。如果您选择仅给出Category类型字段,则用户可以从管理员添加新类别而无需更改任何代码。

如果您想知道如何向Venue实际添加类别,首先需要获取类别实例。这可以通过检索已经在数据库中的一个或创建一个新的

来完成
category = Category.objects.get(pk=1)

接下来,你可以使用该类别创建一个新的场地

new_venue = Venue(category=category, other_args)
new_venue.save()

将使用该类别保存新的场地。 Django documentation提供了很好的参考。