2011-09-05 19 views
14

Kullanıcı modeline yabancı anahtar, gibi bir şey:Django - Ben yeni model oluşturmak istiyorum

user_name = models.ForeignKey(u"Username", User), 

ama SyncDB çalıştığımda, bu hata mesajını alıyorum:

"AttributeError: 'unicode' object has no attribute '_meta'"

görünüyorum bazı öğreticiler üzerinde, her şey benim modelimde aynı gibi görünüyor ve "_meta" ile ilgili sorun hiç bahsedilmiyor.

+1

ben sonda gelen öğrendim. Bu benim aptallığım hatasıydı. Başka bir modelimde vardı: class Meta: verbose_name = smart_encode (u "bir şey). Üzgünüz ve ikinize de teşekkürler! – Meph

cevap

22

Sadece istiyorum:

from django.contrib.auth.models import User 

class MyModel(models.Model): 
    ... 
    user = models.ForeignKey(User) 
    ... 
+0

Tam olarak ne istediğimi ve ne yaptığımı değil, ancak bu çözüm, AttributeError'u Sorumda belirtildiği gibi yükseltir. – Meph

+1

@Meph, sahip olduklarınız ile Joe'nun arasındaki farkı göremiyor musunuz? İpucu: ForeignKey'e ilk parametreye bakın. –

+0

@DanielRoseman: Yapabilirim, ama fark etmez. Joes çözümü ile aynı hata – Meph

28

Bunu yapmanın daha kolay yolu ayarları dosyadan AUTH_USER_MODEL kullanmaktır.

Örnek: Varsayılan settings.AUTH_USER_MODEL olarak

from django.db import models 
from django.conf import settings 

class Article(models.Model): 
    headline = models.CharField(max_length=255) 
    article = models.TextField() 
    author = models.ForeignKey(settings.AUTH_USER_MODEL) 

şey yapmak zorunda bırakmadan django.contrib.auth.models.User ifade eder.

Bu yaklaşımın avantajı10, değiştirmeden özel bir kullanıcı modeli kullansanız bile uygulamanız çalışmaya devam edecektir. özel kullanıcı modellerinin faydalanmak konusunda daha fazla bilgi için

check out this part of the Django docs

+0

sorusunu sorabilmemiz mümkün mü? Yabancı anahtarın kısıtlanması mümkün mü? –