yes i studied this tutorial before and i added this function to "Club" 
class (( Receiver function class )) but it does not affect fields 
def teampoints( sender, instance, **kwargs):
if instance.score_local > instance.score_visitor:
return instance.club_local.won +1 and instance.club_visitor.lost + 1
elif instance.score_local < instance.score_visitor:
return instance.club_local.lost + 1 and instance.club_visitor.won + 1
else:
return instance.club_local.draw + 1 and instance.club_visitor.draw + 1


On Tuesday, April 23, 2019 at 3:27:28 PM UTC+2, Derek wrote:
>
> You need to use Django signals to provide a custom "post_save".  There is 
> a good tutorial here:
>
> https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html
>
>
> On Monday, 22 April 2019 16:22:19 UTC+2, omar ahmed wrote:
>>
>> i put this function in "Match" class :
>> def points(self):
>> if self.score_local > self.score_visitor:
>> return (self.club_local.won)+1 and (self.club_visitor.lost)+1
>> elif self.score_local < self.score_visitor:
>> return (self.club_local.lost)+1 and (self.club_visitor.won)+1
>> else:
>> return (self.club_local.draw)+1 and (self.club_visitor.draw)+1
>> and i want it to update fields and 'CalcPoints' function in "Club" class 
>> class Club(models.Model):
>> ...
>> def CalcPoints(self):
>> return self.won*3 + self.draw
>>
>> but until now it does not update objects (( how can i use post_save here 
>> )) 
>>
>> On Saturday, April 20, 2019 at 9:09:01 AM UTC+2, Derek wrote:
>>>
>>> That should just require a basic if/then logic test; "get" the correct 
>>> Club object, update the win/loss field and save the Club. Repeat for both 
>>> Clubs.
>>>
>>> On Thursday, 18 April 2019 14:09:41 UTC+2, omar ahmed wrote:
>>>>
>>>> thank you for response , derek
>>>> but how can i increment 'win' 'lost' or 'draw' Club fields by 'winner' 
>>>> Match field
>>>>
>>>> On Wednesday, April 17, 2019 at 3:26:22 PM UTC+2, Derek wrote:
>>>>>
>>>>> 1. Add a "winner" field to your Match
>>>>> 2. Implement a post_save  signal for the Match model that updates the 
>>>>> "won" or "lost" fields for each Club in the match (simple if/then logic 
>>>>> based on winner).
>>>>>
>>>>> PS I think the default values for "won" and "lost" for a Club should 
>>>>> be "0" and not "1".
>>>>>
>>>>> On Tuesday, 16 April 2019 20:19:34 UTC+2, omar ahmed wrote:
>>>>>>
>>>>>> hello ... i have two models "Club" class and "Match" class and it has 
>>>>>> foreign key to Club
>>>>>> now i want to increment "won" field (or draw or lost) in "Club" class 
>>>>>> by "score_local" and "score_visitor" in "Match" class ..
>>>>>> how can i do this
>>>>>> class Club(models.Model):
>>>>>> name = models.CharField(max_length=100)
>>>>>> won = models.IntegerField(default=1)
>>>>>> draw = models.IntegerField(default=1)
>>>>>> lost = models.IntegerField()
>>>>>> goal_for = models.IntegerField()
>>>>>> goal_against = models.IntegerField()
>>>>>>
>>>>>>
>>>>>> class Match(models.Model):
>>>>>> play_date = models.DateTimeField('play date')
>>>>>> club_visitor = models.ForeignKey(Club, on_delete=models.CASCADE, 
>>>>>> related_name='match_club_visitor')
>>>>>> club_local = models.ForeignKey(Club, on_delete=models.CASCADE, 
>>>>>> related_name='match_club_local')
>>>>>> score_visitor = models.IntegerField()
>>>>>> score_local = models.IntegerField()
>>>>>>
>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/292b1f7f-d360-4db8-8605-1a9647df6600%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to