我是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分配的所有可用标记,这种行为是错误的:/
我的关系错了还是我忘了要添加到我的(模型)代码中?
答案 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个标签"通信"和"信使"自动进入"标签"字段。
新应用,没有任何输入,显示了两个标签
答案 1 :(得分:0)
实际上,您没有选择任何选项。这只是您可以选择标签的列表。正如您所读到的,如果您在月球的苹果面上,可以使用ctrl或cmd选择一个或多个选项。