2017-07-19 39 views
0

我是一個新的Django用戶,並且被一些繼承和實例化的特性所困惑,特別是創建一個用戶定義的類型類的字段。新的Django/python用戶有__init__問題我已經定義了幾個類,並且想用另一個類作爲另一個字段

當我嘗試從管理頁面添加藝術家,我得到 蟒蛇類型錯誤:初始化()失蹤5個所需的位置參數:「姓名」,「FIRST_NAME」,「姓氏」,「網站」和「 Instagram的」 [18 /月/ 2017年21點43分28秒] 「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

是的,你肯定是在那裏!謝謝您的幫助。 –

相關問題