2017-12-12 8 views
-1

私はDjangoの世界では新しく、models.pyの2つのクラスをリンクして、それぞれの変数を同じにすることができます。ここではmodels.pyコードは次のとおりです。Django models.pyのあるクラスの変数を別のクラスの変数と同じにするには?

from django.db import models 
from django.core.urlresolvers import reverse 
# Create your models here. 


class file(models.Model): 
    title = models.CharField(max_length=250) 
    FILE_TYPE_CHOICES = (
     ('audio','Audio'), 
     ('games','Games'), 
     ('videos','Videos'), 
     ('applications','Applications'), 
     ('books','Books/Docs'), 
     ('others','Others') 
     ) 
    file_type = models.CharField(max_length=10,choices=FILE_TYPE_CHOICES,default='others') 
    description = models.TextField(max_length=6000) 
    #uploader_username = ??? 

    def get_absolute_url(self): 
     return reverse('one:user') 

    def __str__(self): 
     return self.title 

class user (models.Model): 
    username= models.CharField(max_length=100) 
    email=models.EmailField 
    password= models.CharField(max_length = 100) 
    user_files = models.ForeignKey(file, on_delete=models.CASCADE) 

ここで私はfileクラスからuploader_usernameを設定したいuserクラスからusernameに等しいです。

+0

'uploader_username = user.username'? –

+0

基本的にユーザーモデルとファイルモデルを関連付ける必要があります。 https://docs.djangoproject.com/en/2.0/ref/models/relations/ –

答えて

2

いいえ、あなたはこれをしたくありません。 ForeignKeyをFileからUserに変更したいのではなく、my_file.user.usernameにアクセスするだけです。

このように、独自のユーザークラスを定義することは悪い考えです。そうすることには十分な理由があるかもしれませんが、もしそうなら、あなたは認証アプリケーションの抽象基本クラスを継承する必要があります。そうしないと、パスワードをクリアテキストで保存するため、重大なセキュリティ問題になります。ここにあなた自身のモデルが必要なようには見えません。このクラスを削除する必要があります。

関連する問題