我是新來的Django休息,今天中遇到了一點小麻煩設置多對多字段爲空=真兩側: 比方說,我們有兩種型號:如何在Django
class Tags(models.Model):
tag_text = models.CharField(name='tag', max_length=30)
和
class Entries(models.Model):
entry_header = models.CharField(name='header', max_length=30)
pub_date = models.DateTimeField(auto_now_add=True)
entry_text = models.TextField(blank=True, null=True)
entry_tags = models.ManyToManyField(Tags, related_name='entries', blank=True)
我可以設置空白屬性爲Entries模型,但對標籤做同樣的操作有困難。 當我試圖像
http --json POST http://127.0.0.1:8000/tags/ tag_text="tag with no entry"
它返回我
"entries": [ This field is required ]
有什麼辦法,我可以creatre標籤,在這種情況下空白「項」 Field對象,這種方式?
預先感謝您!
...並請注意
http --json POST http://127.0.0.1:8000/entries/ header="entry with no tags"
給出所需的響應
從rest_framework串行會在這種情況下很簡單,以及:
class EntriesSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Entries
fields = ('url', 'header', 'entry_text', 'pub_date', 'entry_tags')
class TagsSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Tags
fields = ('url', 'tag', 'entries')
這裏是我們的觀點(來自rest_framework的視圖使其更快):
class EntriesView(viewsets.ModelViewSet):
queryset = Entries.objects.all()
serializer_class = EntriesSerializer
class TagsView(viewsets.ModelViewSet):
queryset = Tags.objects.all()
serializer_class = TagsSerializer
所有去throught默認路由器(從rest_framework.routers導入defaultrouter中):
router = DefaultRouter()
router.register(r'entries', views.EntriesView)
router.register(r'tags', views.TagsView)
urlpatterns = [
url(r'^', include(router.urls)),
]
您可以將'tag_text = models.CharField(name ='tag',max_length = 30)''設置爲'tag_text = models.CharField(name ='tag',max_length = 30,blank = True,null = True) '? 或者您可能需要在ManyToManyField上添加'null = True'。 –
@Caleb_Allen我試圖在m2m字段中添加null = True,即使針對關於null屬性效果的文檔說明...並且它不能工作...... –
您是否在模型上運行遷移?可能會有影響。 –