2013-02-21 2 views
0

을 변경할 수 없습니다 내가 레이블 작업을 선택, 제품을 게시 할 때 여기 장고 버전 1.4.5장고 관리 - 외래 키 필드

내 모델

class Product (models.Model): 
    name=models.CharField(max_length=200) 
    description=models.TextField() 
    label=models.ForeignKey('Label') 
    pub_date = models.DateTimeField(editable=False) 

    def save(self): 
     #item will not have id if this is the first save 
     if not self.id: 
      self.pub_date = datetime.date.today() 
      super(Product, self).save() 

    def __unicode__(self): 
    return self.name 

class Label(models.Model): 
    """ 
    A clothing label, e.g. Kate Spade 
    """ 
    name=models.CharField(max_length=100) 

    def __unicode__(self): 
     return self.name 

의 관련 부분이다가 벌금. 항목 게시가 예상대로 작동하며 관리 콘솔에서 제품으로 돌아 가면 레이블 필드가 채워집니다. 그러나 레이블 필드의 값을 변경하려고하면 "he product"Prod 1 "was successfully"라는 메시지가 표시된 제품 페이지의 기본 목록으로 이동하지만 Prod 1 페이지로 돌아 가면 해당 필드가 실제로 제대로 저장되지 않았습니다.

여기에 아이디어가 있습니까?

+1

이 작업을해야합니다. 코드를 더 게시 하시겠습니까? 또한 드롭 다운 메뉴에서 선택한 옵션을 변경하면'selected' 속성이 변경되지 않는 것이 정상입니다 ([이 답변] (http://stackoverflow.com/a/4842181/237244) 참조). –

답변

1

super(Product, self).save()if 블록 내에서, 그래서 그것은 편집 호출되지 않습니다. 또한 auto_now_addpub_date 필드에 사용하지 않는 이유는 무엇입니까? 귀하의 경우에는

1

는, 필요가 명시 적으로 날짜 & 시간을 설정할 수 없습니다. 'auto_now_add'을 사용할 수 있습니다. 자세한 내용은이 링크를 클릭하십시오.

class Product (models.Model): 
    name=models.CharField(max_length=200) 
    description=models.TextField() 
    label=models.ForeignKey('Label') 
    pub_date = models.DateTimeField(editable=False, auto_now_add = True) 

    def __unicode__(self): 
    return self.name 

당신이 다음 코드를 사용하여 수동으로 설정해야하는 경우

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add

. 또한 변경을 위해 수퍼 클래스를 호출합니다.

def save(self): 
    #item will not have id if this is the first save 
    if not self.id: 
     self.pub_date = datetime.date.today() 
    super(Product, self).save()