1

Tastypieを使用してAPIを構築しています。

リソースを作成しましたが、何らかの理由でPOSTリクエストを行うと、エラーが返されても常にリソースが作成されます。

たとえば、次のエラーが発生します。

'authors'フィールドにはデータがなく、null値を許可しません

しかし、管理コンソールでリソースを確認すると、リソースが作成され、「作成者」フィールドを空白に設定したことが示されます。

POSTリクエストを失敗させ、パラメーターが欠落している場合にリソースを作成しないようにする必要があります。

デフォルトでは、モデルのすべてのフィールドはblank=Falseおよびnull=Falseです。

編集

これが私が使用しているモデルです:

class Story(models.Model):
  title = models.CharField(max_length=50)
  authors = models.ManyToManyField(Author, related_name='stories')
  cover_photo_url = models.URLField(max_length = 200)

これが私のリソースです:

class StoryResource(ModelResource):
  authors = fields.ToManyField(SimpleAuthorResource, 'authors', full=True)
  posts = fields.ToManyField(PostResource, 'posts', full=True, blank=True)
  class Meta:
    queryset = Story.objects.all()
    resource_name = 'story'
    authorization = Authorization()
  def determine_format(self, request):
    return "application/json"

私は次のリクエストを行っています:

curl -X POST --header "Content-type:application/json" 
     --data '{"title" : "cool new story", "cover_photo_url":"hello.png"}' 
     http://localhost:8000/api/v1/story/

今、私は他のことを試みてきました。検証とそれを含めると、独自の一連の問題が発生しました。検証がなくても、必要なパラメーターが欠落している状態でPOSTを実行しようとすると、行の挿入が失敗するはずがありませんか?

4

1 に答える 1