내가 원하는 것은 ScanEvent 인스턴스가 생성 될 때 카드의 점수를 높이는 것입니다.신호를 사용하여 장고에서 다른 객체를 업데이트하는 방법은 무엇입니까?
card = Card.objects.get(pk=2)
event = ScanEvent(scanned_card=card)
ownr = OwnerProfile.objects.get(pk=1);
event.save() # will call add_points_to_card()
나는 오류를 얻을 수 없지만 포인트는 신호가 호출되지 않습니다 때문입니다 (업데이트되지 않습니다 : 내가하려고 할 때이 간단한 장고 쉘에서
class Card(models.Model):
# some attributes
class Points(models.Model):
benef_card = models.ForeignKey(Card, related_name='points')
at_owner = models.ForeignKey(OwnerProfile)
nb_current_points = models.PositiveIntegerField(default=0)
class ScanEvent(Event):
scanned_card = models.ForeignKey(Card)
scanned_at_owner = models.ForeignKey(OwnerProfile)
won_points = models.PositiveIntegerField(default=1)
# This method is called with a post_save signal to add points to a card
def add_points_to_card(sender, instance, **kwargs):
pts = instance.scanned_card.points.get(at_owner=instance.scanned_at_owner)
pts.nb_current_points += instance.won_points
pts.save()
# At the end of models.py
signals.post_save.connect(ScanEvent.add_points_to_card,
sender=ScanEvent)
: 나는 다음과 같은 모델을 가지고) (save() 메소드 생각을 무시할 때 작동 함)
고마워.
신호 연결에 사용하는 코드를 정확하게 표시하십시오. –
완료. 확실하지 신호를 연결할 수있는 장소 (하지만 오류가 관련이없는 것 같아). –