Django中的许多字段

时间:2014-05-10 11:02:10

标签: django django-admin django-orm manytomanyfield

我是Django的新手,我在Django的Admin中使用ManyToManyFields时有一个问题。

所以我有两个模型类。

class Tag(models.Model):
    tag = models.CharField(max_length=100)
    def __str__(self):
        return self.tag
    class Meta:
        ordering = ['tag']
        verbose_name = "tag"
        verbose_name_plural = "tags"

class MyiPhoneApp(models.Model):
    tags = models.ManyToManyField(Tag)

    name = models.CharField(max_length=200)
    bundleID = models.CharField(max_length=200, primary_key=True)
    def __str__(self):
        return self.name
    class Meta:
        ordering = ['name']
        verbose_name = "iPhone App"
        verbose_name_plural = "iPhone Apps"

因此,当我将此类注册到Admin时,我可以添加一些iPhone应用程序。但是在添加一个带有2个标签并保存的应用程序之后,当我添加第二个应用程序或更多应用程序时,会出现一些奇怪的问题。

每个App都有每个标记属性。

我认为多对多的领域是代表这一点的正确关系。

一个应用有很多标签,一个标签有很多应用

但现在每个App都有db分配的所有可用标记,这种行为是错误的:/

我的关系错了还是我忘了要添加到我的(模型)代码中?

2 个答案:

答案 0 :(得分:0)

项目名称是" helloworld_2",使用manage.py start app创建的应用名称是" MyApps"

在settings.py," MyApps"在INSTALLED_APPS

在MyApps的models.py中,代码在我上面的第一篇文章中。

在MyApps的admin.py中有四行代码:

from django.contrib import admin
from MyApps.models import Tag, MyiPhoneApp

# Register your models here.

admin.site.register(Tag)
admin.site.register(MyiPhoneApp)

就这样吧。在syncdb和运行服务器之后,我转到localhost:8000 / admin

我创建的第一个应用是: 名称:" BlahBlah App" bundle_id:" com.mir.msg.blah"

标签:"沟通"和"信使"

保存后,我想创建第二个应用程序。 还有它,2个标签"通信"和"信使"自动进入"标签"字段。

First saved App

New App, without any of my input, there are the two tags displayed

新应用,没有任何输入,显示了两个标签

答案 1 :(得分:0)

实际上,您没有选择任何选项。这只是您可以选择标签的列表。正如您所读到的,如果您在月球的苹果面上,可以使用ctrl或cmd选择一个或多个选项。