Re: Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “field-detail”

2016-11-14 Thread Bernardo Garcia
I understand. Thanks Xavier This works for me :)

On Monday, November 14, 2016 at 5:14:55 AM UTC-5, Xavier Ordoquy wrote:
>
> Hi,
>
> You declared your view as "fields" in the routers, so you should use 
> "fields-detail" as the view name for the hyperlink.
>
> Regards,
> Xavier,
> Linovia.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-rest-framework+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “field-detail”

2016-11-14 Thread Xavier Ordoquy
Hi,

You declared your view as "fields" in the routers, so you should use 
"fields-detail" as the view name for the hyperlink.

Regards,
Xavier,
Linovia.

-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-rest-framework+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “field-detail”

2016-11-11 Thread Bernardo Garcia


I know that this inconvenient is very presented, may be that I need learn 
more about of serializer relationships

I have the following model:



class Field(models.Model):

FIELD_TYPE_NATURE = 'Grama natural'
FIELD_TYPE_ARTIFICIAL = 'Grama sintetica'

FIELD_TYPE_CHOICES = (
(FIELD_TYPE_NATURE, u'Grama natural'),
(FIELD_TYPE_ARTIFICIAL, u'Grama sintetica'),
)

MODALITY_11 = 'Fútbol 11'
MODALITY_8 = 'Fútbol 8'


MODALITY_CHOICES = (
(MODALITY_11, u'Fútbol 11'),
(MODALITY_8, u'Fútbol 8'),
)

name = models.CharField(
max_length=150,
unique=True,
db_index=True,
primary_key=True,
)

field_type = models.CharField(
choices=FIELD_TYPE_CHOICES,
default=False,
blank=False,
max_length=20,
verbose_name=('Tipo de material/grama de la cancha')
)

modality = models.CharField(
max_length=40,
blank=False,
verbose_name='Modalidad'
)
photo = models.ImageField(upload_to='fields', blank=True, null=True)
location = models.CharField(max_length=150, blank=False)

def __str__(self):
return '%s %s %s' % (self.name, self.field_type, self.location)



My serializer is the following:

class FieldSerializer(serializers.HyperlinkedModelSerializer):
#url = serializers.HyperlinkedIdentityField(view_name='field-detail',)

class Meta:
model = Field
fields = ('url', 'name','field_type','modality','photo','location')


My viewset is:

class FieldViewSet(viewsets.ModelViewSet):
queryset = Field.objects.all()
serializer_class = FieldSerializer


This is my router:

router = routers.DefaultRouter()
router.register(r'fields', FieldViewSet)


And my url:

...
url(r'^api/', include(router.urls)),
...



When I go to the http://localhost:8000/api/fields/ url I get the following 
message:


File 
"/home/bgarcial/.virtualenvs/fuupbol2/lib/python3.5/site-packages/rest_framework/relations.py",
 line 386, in to_representation
raise ImproperlyConfigured(msg % self.view_name)
django.core.exceptions.ImproperlyConfigured: Could not resolve URL for 
**hyperlinked relationship using view name "field-detail". You may have failed 
to include the related model in your API, or incorrectly configured the 
`lookup_field` attribute on this field.**
[11/Nov/2016 16:39:53] "GET /api/fields/ HTTP/1.1" 500 187477



When I use HyperlinkedIdentityField 

 in 
my FieldSerializer class:

class FieldSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='field-detail',)

class Meta:
model = Field
fields = ('url', 'name','field_type','modality','photo','location')



I follow getting the same error. Althought when I go to the url 
http://localhost:8000/api/fields/ I want get is a list of my objects, then 
is possible that I should put:

url = serializers.HyperlinkedIdentityField(view_name='field-list',)

?

I use HyperlinkedIdentityField according to:

This field can be applied as an identity relationship, such as the 'url' 
field on a HyperlinkedModelSerializer. It can also be used for an attribute 
on the object.


I put the field-list in my view_name attribute and I get the error related

Could not resolve URL for hyperlinked relationship using view name 
"field-list". You may have failed to include the related model in your API, or 
incorrectly configured the `lookup_field` attribute on this field.



I don't understand the situations when I should use view_name attribute in 
relation to if I wnt get a list objects, a object detail and so ... 
although here  explain 
something about it.

When I should use HyperlinkedModelSerializer and ModelSerializer

-- 
You received this message because you are subscribed to the Google Groups 
"Django REST framework" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-rest-framework+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.