I am using Django Rest Framework for serialize data. I came across a 
scenario where I have to use Database Views as Model.

*My Model*

class A(models.Model):
    name = models.CharField(max_length=240, blank=True)
    value = models.CharField(max_length=240, blank=True)

    class Meta:
        db_table = 'tbl_a'
class B(models.Model):
   name = models.CharField(max_length=240, blank=True)
   value = models.CharField(max_length=240, blank=True)

    class Meta:
        db_table = 'tbl_b'

*Database View Query*

CREATE OR REPLACE VIEW ab_view AS
SELECT id,name,value FROM tabl_a WHERE name='foo' UNION (SELECT 
b.id,b.name,b.value FROM tabl_b b WHERE b.name='foo')

*Model For Database View*

class ABView(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=240, blank=True)
    value = models.CharField(max_length=240, blank=True)

    class Meta:
        db_table = u'ab_view'
        managed = False

*Print Text Query*

query = ABView.objects.all()print query.count() #output (1000)

When I used ABView as Model in serializer class in it shows me error

TypeError at /ViewName/ 'source' is an invalid keyword argument for this 
function

class ABViewSerializer(rest_serializer.Serializer):

    class Meta:
        model = AbView
        fields = ('name', 'value')

*View*

class ABViewSet(viewsets.ModelViewSet):
    serializer_class = ABSerializer
    queryset = ABView.objects.all()

Is there anything missing in this code?

Can I use Database View in Django REST Framework?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/5baa757f-f5af-4581-a8fd-9e054184d792%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to