2012-07-01 3 views
2

Django와 함께 일하기 좋은 하루였습니다. 다음과 같은 문제가 발생했습니다.django autofill manytomany 필드가 관리자

테이블에 두 당신이 ProdcutPhoto 제품 ID 필드가 작성되는 테이블에 제품을 추가 할 때 관리자가 다음 TabularInline

class ProductPhotoInline(admin.TabularInline): 
    model = ProductPhoto 
    verbose_name = u"Фото" 
    verbose_name_plural = u"Фотографии" 

class ProductAdmin(admin.ModelAdmin): 
    list_display = ('title') 
    search_fields = ... 
    fieldsets = ... 
    ) 
    inlines = [ ProductPhotoInline, ] 

문제를 사용하기위한 모델

class Product(models.Model): 
    productID  = models.AutoField(primary_key=True) 
    brandID   = models.ForeignKey(Brand, verbose_name=u'Бренд') 
    categoryID  = models.ForeignKey(Category, verbose_name=u'Категория') 
    productPhotos = models.ManyToManyField("ProductPhoto", verbose_name = "Фотографии товара", related_name="photos", blank=True) 

class ProductPhoto(models.Model): 
    productPhotoID  = models.AutoField(primary_key=True) 
    productID   = models.ForeignKey(Product) 
    imageFile   = models.FileField(u'Путь к изображение', upload_to=makeUploadPath) 
    dateModified  = models.DateField(auto_now=True) 

, 그리고 필드가 있습니다 제품 productPhotos가 비어 있습니다. 두 필드를 모두 채우기 위해 최선의 방법.

+0

그냥 골동품. 왜이 인라인을 편집하고 싶습니까? Product 클래스에 productPhotos를 정의했습니다. 이 경우 Product에 대한 관리 인터페이스를 통해 기존 ProductPhoto를 선택하거나 원하는 경우 새 ProductPhoto를 추가 할 수 있습니다. – Jingo

답변

0

productPhotos ManyToMany 필드를 제거해야합니다. 중복되어 있습니다. 각 사진이 하나의 제품에만 첨부되어 있으면 productID ForeignKey 만 있으면됩니다.

제품 인스턴스의 사진에 액세스하려면 productphoto_set을 사용할 수 있습니다.

product = Product.objects.get(pk=1) 
photos = product.productphoto_set.all() 
관련 문제