2017-07-19 1 views
0

私は新しいdjangoユーザーです。特に、継承とインスタンス化のいくつかの機能ユーザー定義の型クラスのフィールドを作成します。新しいdjango/pythonユーザーには__init__の問題があります。私はいくつかのクラスを定義しました。あるクラスを別のクラスのフィールドとして使用したいです。

私は管理者ページからアーティストを追加しようとすると、私が得る Pythonの例外TypeError:のinit()5つの必要な位置引数不足している: '名前'、 'FIRST_NAME'、 'LAST_NAME'、 'ウェブサイトを'、および ' Instagramの」[18/7月/ 2017夜9時43分二十八秒] "GET /管理/ showyourwork /アーティスト/追加/ HTTP/1.1" 500 110559

from django.db import models 
# Create your models here. 
from django.db.models import ImageField 
from django.urls import reverse 


class Artist(models.Model): 
    # Fields 
    first_name = models.CharField(max_length=30, null=True) 
    last_name = models.CharField(max_length=30, null=True) 
    name = models. CharField(max_length=61, null=True) 
    website = models.CharField(max_length=50, null=True) 
    instagram = models.CharField(max_length=20, null=True) 

    # Metadata 
    class Meta: 
     ordering = ["last_name", "first_name"] 

    # Methods 
    def __init__(self, name, first_name, last_name, website, instagram): 
     self.name = name 
     self.first_name = first_name 
     self.last_name = last_name 
     self.website = website 
     self.instagram = instagram 

    def get_absolute_url(self): 
     """ 
     Returns the url to access a particular instance of MyModelName. 
     """ 
     return reverse('model-detail-view', args=[str(self.id)]) 

    def __str__(self): 
     """ 
     String for representing the MyModelName object (in Admin site etc.) 
     """ 
     return self.name 


class Media(models.Model): 
    # Fields 
    title = models.CharField(max_length=50) 
    artist = models.ForeignKey(Artist) 

    # Metadata 
    # class Meta: 
    # ordering = ["author", "title"] 

    # Methods 
    def __init__(self, title): 
     self.title = title 
     self.artist = Artist(None, None, None, None, None) 

    def get_absolute_url(self): 
     """ 
     Returns the url to access a particular instance of MyModelName. 
     """ 
     return reverse('model-detail-view', args=[str(self.id)]) 

    def __str__(self): 
     """ 
     String for representing the MyModelName object (in Admin site etc.) 
     """ 
     return self.title 

class Picture(Media): 
    # Fields inherits title and author from Media 
    image = ImageField() 

    # Metadata inherits from Media 

    # Methods 
    def __init__(self, *args, **kwargs): 
     self.image = kwargs.pop('image') 
     super(Media, self).__init__(*args, **kwargs) 

class Series(Media): 
    # Fields inherits title and author from Media 
    images = [] 

    # Metadata inherits from Media 

    # Methods 
    def __init__(self, *args, **kwargs): 
     self.images.append(kwargs.pop('image')) 
     super(Media, self).__init__(*args, **kwargs) 

    def addimage(self, image): 
     self.images.append(self, image) 

すべてのヘルプは歓迎です!

答えて

0

django.model.Modelから__init__メソッドをオーバーライドしないでください。 そのようなものが必要な場合は、この問題にどのように近づいていくかについてのドキュメントを参照できます。 https://docs.djangoproject.com/en/1.11/ref/models/instances/#django.db.models.Model

+0

ありがとう!今私はあなたのおかげで働いている画像の配列であるシリーズに対処する方法を把握する必要があります! –

+0

この場合、あなたは 'ForeignKey'を使用すべきではありませんか? https://docs.djangoproject.com/en/1.11/topics/db/examples/many_to_one/ – henriquesg

+0

もちろん間違いありません。助けてくれてありがとう。 –

関連する問題