OK, I got it. I was defining my own managers on Episode, and there was
no default manager. Adding an objects=models.Manager() solved it.
Maybe this should be added to the documentation? Should I create a
ticket?
On Jan 28, 1:56 am, orestis <[EMAIL PROTECTED]> wrote:
> This is VERY WEIRD:
>
> In [2]: import django
> In [3]: django.get_version()
> Out[3]: u'0.97-pre-SVN-7031'
> In [4]: from leach.models import Category
> In [5]: a = Category.objects.all()[0]
> In [6]: a.episodes
> ---------------------------------------------------------------------------
> TypeError Traceback (most recent call
> last)
>
> /Users/orestis/Developer/skai/skai/<ipython console>
>
> /opt/local/lib/python2.4/site-packages/django/db/models/fields/
> related.py in __get__(self, instance, instance_type)
> 246 clear.alters_data = True
> 247
> --> 248 manager = RelatedManager()
> 249 manager.core_filters = {'%s__pk' % rel_field.name:
> getattr(instance, rel_field.rel.get_related_field().attname)}
> 250 manager.model = self.related.model
>
> TypeError: __init__() takes at least 2 arguments (1 given)
>
> ----
>
> Here is the code:
>
> class Kind(models.Model):
> title = models.CharField(max_length=100)
> description = models.TextField()
> extension_final = models.CharField(max_length=10)
> extension_temp = models.CharField(max_length=10)
> command = models.TextField()
>
> class Category(models.Model):
> title= models.CharField(max_length=100)
> description = models.TextField(blank=True)
> kind = models.ForeignKey(Kind, radio_admin=True )
> skai_id = models.IntegerField(unique=True)
> list_url = models.URLField(max_length=500)
> #the episode url uses placeholders so it can't be verified
> episode_url = models.URLField(max_length=500, verify_exists=False)
> episode_skai_id_regexp = models.CharField(max_length=200)
> episode_file_url_regexp = models.CharField(max_length=200)
>
> class EpisodeManager(models.Manager):
> def __init__(self, status, *args, **kwargs):
> self.status = status
> super(models.Manager, self).__init__(*args,**kwargs)
>
> def get_query_set(self):
> return super(EpisodeManager,
> self).get_query_set().filter(status=self.status)
>
> class Episode(models.Model):
> category = models.ForeignKey(Category, related_name='episodes')
> skai_id = models.IntegerField(unique=True)
> file_url = models.URLField(max_length=500)
> filename = models.CharField(max_length=500, editable=False)
> #autopopulate this from id
> published = models.DateField(editable=False)
> ready = models.DateField(null=True, editable=False)
> status =
> models.CharField(max_length=30,choices=( ('pending','Pending'),
> ('downloading','Downloading'),('waiting', 'Waiting'),
> ('converting','Converting'), ('finished','Finished') ))
>
> pending = EpisodeManager('pending')
> downloading = EpisodeManager('downloading')
> waiting = EpisodeManager('waiting')
> converting = EpisodeManager('converting')
> finished = EpisodeManager('finished')
>
> ----
>
> Everything works in admin, I have added some sample data. When some
> code tries to access 'categoty.episodes' it blows up. Beats me why...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---