Reputation: 33615
I assumed Django automatically created the _set
for me but I'm the following error.
for dep_badge in self.badge.badge_set.all():
AttributeError: 'Badge' object has no attribute 'badge_set'
Models:
class Badge(RewardBase):
"""
Represents a Badge.
"""
name = models.CharField(max_length=60, help_text="Name of the badge")
description = models.TextField(max_length=150)
reputation_value = models.IntegerField(help_text="Value given in accumulate reputation", default=0)
reputation_prerequisite = models.IntegerField(help_text="Point value needed to obtain", default=0)
difficulty_level = models.IntegerField(choices=STATUS_TYPES, default=STATUS_EASY,
help_text="Badge difficulty")
class Award(RewardBase):
"""
Representation of a badge awarded to a user.
"""
description = models.CharField(max_length=100, choices=STATUS_TYPES, default=STATUS_GENERAL)
value = models.IntegerField(default=0)
read = models.BooleanField(default=False, help_text="Has the user read this?")
created = models.DateTimeField(blank=True, null=True, editable=False)
hidden = models.BooleanField(default=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
badge = models.ForeignKey("Badge")
def save(self, *args, **kwargs):
super(Award, self).save(*args, **kwargs)
for dep_badge in self.badge.badge_set.all():
dep_badge.check_prerequisites(self.user, sel
f.badge, self)
Upvotes: 1
Views: 2407
Reputation: 1732
Badge has no badge_set.No foreign key to itself. Maybe u mean award_set?
Upvotes: 2
Reputation: 99620
It looks like you intend to do
self.badge.award_set.all()
instead. badge_set
is looking for a reverse relationship to the Badge
model, which does not exist.
Upvotes: 1