2017-12-04 5 views
0

Ich habe zwei Modelle in meinem Django-Projekt, die Followup und User sind, jedem Followup ist eine Benutzerinstanz zugeordnet [actor field]. Was passiert, ist, wenn ich diesen Code ausführen ich den Primärschlüssel für die Akteure von Standard erhalte ich die first_name Feld erhalten müssen, die für alle Zeilen in Benutzermodell ist aus followups geholtAbrufen eines bestimmten Werts für verschachteltes Objekt in einem Abfrage-Set zum Serialisieren

result = Followup.objects.filter(lead_name = lead).only('lead_name','followup','comments','actor') 
plan = PlanType.objects.filter(lead_id = lead) 
response["followup"] = serializers.serialize('json', result) 

Followup Modell

class Followup(TimeStampedModel): 
lead_name = models.ForeignKey(
    LeadInfo, 
    on_delete=models.CASCADE, 
    null=True 
) 
followup = models.DateField(
    blank=False, 
    verbose_name='Follow up date' 
) 
comments = models.TextField(blank=True, verbose_name='Comments') 
actor = models.ForeignKey(
    User, 
    blank=True, 
    limit_choices_to={'is_staff': True}, 
    on_delete=models.CASCADE, 
    null=True, 
    verbose_name='Actor' 
) 
class Meta: 
    verbose_name = 'followup' 
    verbose_name_plural = 'followups' 

def __str__(self): 
    return '{}'.format(self.lead_name) 

User-Modell

class User(AbstractBaseUser, PermissionsMixin): 
first_name = models.CharField(_('First Name'), max_length=120, blank=True) 
last_name = models.CharField(_('Last Name'), max_length=120, blank=True) 
email = models.EmailField(_('email address'), unique=True, db_index=True) 
is_staff = models.BooleanField(_('staff status'), default=False, 
           help_text='Designates whether the user can log into this admin site.') 

is_active = models.BooleanField('active', default=True, 
           help_text='Designates whether this user should be treated as ' 
              'active. Unselect this instead of deleting accounts.') 
date_joined = models.DateTimeField(_('date joined'), default=timezone.now) 

USERNAME_FIELD = 'email' 
objects = UserManager() 

class Meta: 
    verbose_name = _('user') 
    verbose_name_plural = _('users') 
    ordering = ('-date_joined',) 

def __str__(self): 
    return str(self.email) 

def get_full_name(self): 
    """ 
    Returns the first_name plus the last_name, with a space in between. 
    """ 
    full_name = '{} {}'.format(self.first_name, self.last_name) 
    return full_name.strip() 

def get_short_name(self): 
    "Returns the short name for the user." 
    return self.first_name.strip() 

Antwort

0

Seit django Unterstützung seri does'nt verknüpfte Felder Probieren Sie Django Rest aus, von dem ich denke, dass es Ihre Bedürfnisse befriedigen wird. Django Rest Serializers

In Ihrem Fall vielleicht: Django Rest Method fields

+0

https://stackoverflow.com/a/17032984/2282638 :) –

+0

Danke @SandeepBalagopal. Es scheint, dass die eingebauten Serializer des Djangos das Parsen über verwandte Felder nicht unterstützen. Die Antwort wurde aktualisiert. – rajkris

+0

https://docs.djangoproject.com/en/1.10/topics/serialization/#natural-keys –

Verwandte Themen