Как настроить Tastypie для обработки поля как уникальный ?

Как настроить Tastypie для обработки поля как уникальный? Мое ожидание будет иметь некоторую ошибку не-500 (возможно, 409 конфликт?) В качестве ответа, если я стараюсь вставлять дубликаты записей для поля, помеченного как уникальный.


Я просматривал документы, и похоже, что это должно быть очевидно для меня, но по какой-то причине я не получаю ответ, я ожидаю увидеть.

Вот ссылка документации:

http://readtheedocs.org/docs/django-tastypie/en/latest/fields.html?highlight=Unique


Код пример следующий следующим образом:

URL .py

v1_api = Api(api_name='v1')
v1_api.register(CompanyResource())

urlpatterns = patterns('',
    (r'^api/', include(v1_api.urls)),
)

Resource.py

class CompanyResource(ModelResource):

    CompanyName = fields.CharField(attribute='company_name')
    CompanyId = fields.CharField(attribute='company_id', unique=True)
    Contact = fields.CharField(attribute='contact')
    Email = fields.CharField(attribute='email')
    Phone = fields.CharField(attribute='phone')

    class Meta:
        queryset = Company.objects.all()
        authentication = BasicAuthentication()
        authorization = Authorization()
        allowed_methods = ['get', 'post']

Models.py

class Company(models.Model):

    company_name = models.TextField(default=None, blank=True, null=True)
    company_id = models.CharField(default='', unique=True, db_index=True, max_length=20)
    contact = models.TextField(default=None, blank=True, null=True)
    email = models.EmailField(default=None, blank=True, null=True)
    phone = models.TextField(default=None, blank=True, null=True)

Ошибка, которую я получаю, является следующим (с помощью скручиваемости, чтобы ударить мою локальную службу):

curl --dump-header - -H "Content-Type: application/json" -X POST --user user:password --data '{"CompanyName": "company", "CompanyId": "1234567890", "Contact": "John", "Email": "example@example.com", "Phone": "555-555-5555"}' http://localhost:8000/api/v1/company/
HTTP/1.0 500 INTERNAL SERVER ERROR
Date: Thu, 15 Sep 2011 18:25:20 GMT
Server: WSGIServer/0.1 Python/2.7.1
Content-Type: application/json; charset=utf-8

{"error_message": "(1062, \"Duplicate entry '1234567890' for key 'api_company_company_id_uniq'\")", 
......
raise errorclass, errorvalue\n\nIntegrityError: (1062, \"Duplicate entry '1234567890' for key 'api_company_company_id_uniq'\")\n"}

Когда я удаляю Уникальный = True, DB_index = True = , От модели компании, я не получаю ошибку целостности, но вместо этого создается новый дубликат ресурс. Опять же, это не ожидаемый результат, поскольку я ожидал, что уникальный для преформы некоторых проверки и вызывает некоторую реакцию не 500.

7
задан Tomasz Jakub Rup 28 September 2016 в 20:34
поделиться