2017-11-26 2 views
0

Hier ist die Modelle, die ich versuche, in die HTML-Vorlage zu übergeben. Es ist ein Modell, das dem Benutzerprofil hinzugefügt wird. Jedes mit den Modellen funktioniert einwandfrei und ich habe bereits ein Objekt mit dem Modell erstellt.Django Modelle nicht in HTML tempate

class Profile(models.Model): 
    # ----- Model Choices ----- 
    STATE_CHOICES = (('AL', 'Alabama'), ('AK', 'Alaska'), ('AS', 'American Samoa'), ('AZ', 'Arizona'), ('AR', 'Arkansas'), ('AA', 'Armed Forces Americas'), ('AE', 'Armed Forces Europe'), ('AP', 'Armed Forces Pacific'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DE', 'Delaware'), ('DC', 'District of Columbia'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('IA', 'Iowa'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('ME', 'Maine'), ('MD', 'Maryland'), ('MA', 'Massachusetts'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MS', 'Mississippi'), ('MO', 'Missouri'), ('MT', 'Montana'), ('NE', 'Nebraska'), ('NV', 'Nevada'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NY', 'New York'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('MP', 'Northern Mariana Islands'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VT', 'Vermont'), ('VI', 'Virgin Islands'), ('VA', 'Virginia'), ('WA', 'Washington'), ('WV', 'West Virginia'), ('WI', 'Wisconsin'), ('WY', 'Wyoming')) 
    FRESHMAN = 'FR' 
    SOPHOMORE = 'SO' 
    JUNIOR = 'JR' 
    SENIOR = 'SR' 
    YEAR_IN_SCHOOL_CHOICES = (
     (FRESHMAN, 'Freshman'), 
     (SOPHOMORE, 'Sophomore'), 
     (JUNIOR, 'Junior'), 
     (SENIOR, 'Senior'), 
    ) 
    HIGH_SCHOOL = 'High School' 
    COLLEGE = 'College' 
    SCHOOL_TYPE = (
     (HIGH_SCHOOL, 'High School'), 
     (COLLEGE, 'College') 
    ) 
    # ----- Model Fields ----- 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    first_name = models.CharField(max_length=50, blank=True) 
    last_name = models.CharField(max_length=50, blank=True) 
    state = models.CharField(max_length=250, choices=STATE_CHOICES, blank=True) 
    city = models.CharField(max_length=75, blank=True) 
    school_name = models.CharField(max_length=75, blank=True) 
    school_type = models.CharField(max_length=50, choices=SCHOOL_TYPE ,blank=True) 
    grade = models.CharField(max_length=50, choices=YEAR_IN_SCHOOL_CHOICES, blank=True) 
    skill_one = models.CharField(max_length=25, blank=True) 
    skill_two = models.CharField(max_length=25, blank=True) 
    description = models.TextField(max_length=500, blank=True) 


@receiver(post_save, sender=User) 
def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     Profile.objects.create(user=instance) 

@receiver(post_save, sender=User) 
def save_user_profile(sender, instance, **kwargs): 
    instance.profile.save() 

Hier ist meine Ansicht, ich habe sichergestellt, dass alles korrekt importiert wird.

Dies ist die HTML-Vorlagen, wo ich die Objekte in SQLite-Datenbank durchschleifen bin.

{% extends 'userhome/base.html' %} 

{% block body %} 
<div class='tutors-container'> 
    {% for profile in all_profiles %} 
     {{ profile.first_name }} 
     {{ profile.last_name }} 
    {% endfor %} 
</div> 
{% endblock %} 

Wenn ich den Code die Profil Objekte laufen nicht auf der HTML-Vorlage nicht angezeigt, auch wenn ich ein Objekt erstellt haben, die in der Datenbank gespeichert ist.

Antwort

0

Ihr Benutzerprofil erstellen stellt nicht die first_name oder last_name auf dem Profil

@receiver(post_save, sender=User) 
def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     profile = Profile.objects.create(
      user=instance, 
      first_name=instance.first_name, 
      last_name=instance.first_name 
     ) 
+0

Ihnen sehr danken. Muss ich alle Zeilen im Modell in der Funktion create_user_profile festlegen? –

+0

Das ist der falsche Ansatz. Das Profilmodell sollte diese Felder nicht duplizieren. Die Vorlage sollte über den Benutzer auf sie zugreifen. –

+0

@DanielRoseman Es ist sicherlich nicht der richtige Weg, es zu tun, ich habe nur darauf hingewiesen, den Teil, den sie verpasst haben – Pblove