Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot have ReferenceField unique #239

Closed
Vayel opened this issue Aug 8, 2017 · 2 comments
Closed

Cannot have ReferenceField unique #239

Vayel opened this issue Aug 8, 2017 · 2 comments
Labels

Comments

@Vayel
Copy link
Contributor

Vayel commented Aug 8, 2017

I have this simple model:

class Model(Document):
    ref = ReferenceField('Referenced', unique=True,)

When I create a basic serializer and a basic viewset for this model, I obtain an error when I request the endpoint (/models/):

Traceback (most recent call last):
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/base.py", line 217, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/core/handlers/base.py", line 215, in _get_response
    response = response.render()
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/django/template/response.py", line 107, in render
    self.content = self.rendered_content
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/response.py", line 72, in rendered_content
    ret = renderer.render(self.data, accepted_media_type, context)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/renderers.py", line 703, in render
    context = self.get_context(data, accepted_media_type, renderer_context)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/renderers.py", line 636, in get_context
    raw_data_post_form = self.get_raw_data_form(data, view, 'POST', request)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/renderers.py", line 559, in get_raw_data_form
    content = renderer.render(serializer.data, accepted, context)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/serializers.py", line 534, in data
    ret = super(Serializer, self).data
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/serializers.py", line 267, in data
    self._data = self.get_initial()
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/serializers.py", line 411, in get_initial
    for field in self.fields.values()
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework/serializers.py", line 364, in fields
    for key, value in self.get_fields().items():
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework_mongoengine/serializers.py", line 324, in get_fields
    field_name, self.field_info, model, depth, depth_embedding
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework_mongoengine/serializers.py", line 373, in build_field
    return self.build_reference_field(field_name, relation_info, nested_depth)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework_mongoengine/serializers.py", line 469, in build_reference_field
    field_kwargs = get_relation_kwargs(field_name, relation_info)
  File "/home/vincent/.local/share/virtualenvs/ieml/lib/python3.6/site-packages/rest_framework_mongoengine/utils.py", line 213, in get_relation_kwargs
    validator = UniqueValidator(queryset=model_field.model.objects)
AttributeError: 'ReferenceField' object has no attribute 'model'
@zhuying412
Copy link

define the unique index in meta.

@Vayel
Copy link
Contributor Author

Vayel commented Sep 26, 2017

Indeed, it works.

@Vayel Vayel closed this as completed Sep 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants