我是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模型设置空白属性,但是很难对Tag做同样的事情。
这样,当我尝试类似

http --json POST http://127.0.0.1:8000/tags/ tag_text="tag with no entry"


它返回我

"entries": [ This field is required ]


在这种情况下,有什么方法可以创建带有空白“条目”字段的标签对象?

先感谢您!



...并且请注意

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


全部通过默认路由器(从rest_framework.routers导入DefaultRouter):

router = DefaultRouter()
router.register(r'entries', views.EntriesView)
router.register(r'tags', views.TagsView)

urlpatterns = [
    url(r'^', include(router.urls)),
]

最佳答案

>>> from testapp.models import Tags, Entries
>>> t = Tags.objects.create(tag = 'TAG')
>>> t
<Tags: Tags object>


它对我有用,不是模型,不是表单或您使用的验证器

07-28 02:47
查看更多