2017-06-23 4 views
1

Wie man mehr als ein Django-Modell mit dem authentifizierten Benutzer einer Django-App verknüpft. Wie sieht meine view.py- und html-Vorlage aus, wenn ich Informationen von diesen Modellen anzeigen möchte welche sind Link zum Benutzer. Danke im Voraus .Mehrere Modelle erstellen, um Django-Benutzer zu erweitern

ist hier mein Code als

class UserProfile(models.Model): 
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name="userprofile") 
    experience= model.TextField(max_Length=500,null=True,blank=False) 
    def __str__(self): 
     return self.user.username 
@receiver(post_save,sender=User) 
def create_profile(sender,instance,created,**kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 
post_save.connect(create_profile,sender=User) 

folgt nun das zweite Modell, das, wo ich ein Problem

class UserProfileDp(models.Model): 
    user = models.OneToOneField(User,on_delete=models.CASCADE,related_name="userprofiledp") 
    profile_dp = models.ImageField(upload_to="profile_image" ,null= True,blank=True) 
    def __str__(self): 
     return self.profile_dp 
@receiver(post_save,sender=User) 
def create_profile(sender,instance,created,**kwargs): 
if created: 
    UserProfileDp.objects.create(user=instance) 
post_save.connect(create_profile,sender=User) 

Die Formularansicht des ersten Modells ohne Probleme funktioniert ziemlich gut haben, ist .aber i erhalten einen Fehler beim Erstellen der Formularansicht für das zweite Modell Hier ist mein View.py-Code für das zweite Modell

def user_profile_pic(request): 
if request.method == 'POST': 

    profile_form = User_dp_form(request.POST,request.FILES,instance=request.user.userprofiledp) 
    if profile_form.is_valid(): 

     profile_form.save() 
     messages.success(request,'Your Profile has been Updated') 
     return redirect('success:profile_account') 
    else: 
     messages.error(request,'fill out the fields correctly') 
else: 

    profile_form = ProfileForm(instance=request.user.userprofiledp) 
return render(request,"success/user_account/edit_profile.html",{'profile_form':profile_form}) 

Fehler

RelatedObjectDoesNotExist bei/user_profile_pic/

Benutzer hat kein userprofiledp.

Antwort

1

Auf die gleiche Weise verknüpfen Sie einen. Überlege es nicht.

Beide benötigen ein OneToOneField für den Benutzer und einen verwandten Namen. Es gibt nichts besonderes in der Ansicht und HTML. Sie referenzieren sie beide aus dem Benutzermodell, genauso wie Sie Felder aus einem Profilmodell referenzieren.

Verwandte Themen