Hi,

To limit the number or rows in an inline, max_num is usually the way to go.
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin.max_num

As far as having the list of all possibilities available as options goes, 
it gets a little more complicated and I don't think it's something the 
admin really handles out of the box. You're starting to get to a 
complicated enough case where it might make sense to roll your view and 
form code.

It might be possible to do it with a custom form and the proper "initial" 
argument to your formset.

Collin

On Friday, December 5, 2014 9:41:46 AM UTC-5, inoyon artlover KLANGRAUSCH 
wrote:
>
> Did it in this fashion:
>
> models.py
>
> class Interests(models.Model): 
>
> ORDER = [(y, y) for y in range(10, 200, 10)] interest = models.CharField( 
> verbose_name='Interesse', max_length=40) interest_order = 
> models.SmallIntegerField(default=None, choices=ORDER) interest_active = 
> models.BooleanField(default=False)
>
>  class Meta:
>     verbose_name_plural = 'Interessen'
>     ordering = ['interest']
>
>  def __str__(self):
>     return self.interest
>
> class Sports(models.Model): ORDER = [(y, y) for y in range(10, 200, 10)] 
> sport = models.CharField(verbose_name='Sportart', max_length=40) 
> sport_order = models.SmallIntegerField(default=None, choices=ORDER) 
> sport_active = models.BooleanField(default=False)
>
> class Meta:
>     verbose_name_plural = 'Sportarten'
>     ordering = ['sport']
>
> def __str__(self):
>     return self.sport
>
> class CustomUserprofileInterests(models.Model): user = 
> models.OneToOneField(User) interests = models.ManyToManyField( Interests, 
> through='CustomInterests', through_fields=('custominterest', 'interest'), 
> verbose_name='Interessen', null=True, blank=True)
>
> sports = models.ManyToManyField( Sports, through='CustomSports', 
> verbose_name='Sportarten', null=True, blank=True)
>
> class Meta: verbose_name_plural = 'Interessensprofil'
>
> def get_full_name(self):
>     return self.user
>
> def get_short_name(self):
>     return self.user
>
> def __str__(self):
>     return '{0} | {1}'.format(self.user, 'Interessensprofil')
>
> class CustomInterests(models.Model):
>
> WEIGHT = [(y, y) for y in range(1, 7)]
>
> interest = models.ForeignKey(Interests)
> custominterest = models.ForeignKey(CustomUserprofileInterests)
> # interested = models.BooleanField(default=False)
> rating = models.SmallIntegerField(choices=WEIGHT)
>
> class CustomSports(models.Model):
>
> WEIGHT = [(y, y) for y in range(0, 7)]
>
> sport = models.ForeignKey(Sports)
> custominterest = models.ForeignKey(CustomUserprofileInterests)
> # interested = models.BooleanField(default=False)
> rating = models.SmallIntegerField(choices=WEIGHT)
>
> AND THE admin.py
>
> class CustomProfile(admin.StackedInline): model = models.CustomUserprofile 
> can_delete = False verbose_name_plural = 'Nutzerprofile'
>
> class CustomUserAdmin(UserAdmin): inlines = (CustomProfile,)
>
> class CustomInterestsInline(admin.TabularInline): model = 
> models.CustomInterests extra = 9
>
> class CustomSportsInlilne(admin.TabularInline): model = 
> models.CustomSports extra = 9
>
> admin.site.register(models.Interests) admin.site.register(models.Sports) 
> admin.site.register(models.CustomUserprofileInterests) 
> admin.site.register(models.CustomInterests) 
> admin.site.register(models.CustomSports) 
> admin.site.register(models.CustomUserprofileInterests, 
> CustomUserprofileAdmin)
>
> The nexts steps I want to accomplish:
>
> A form for users, they can create/edit the profile. The 'interests' and 
> 'sports' columns have to be prepopulated with all available (declared by 
> 'active' with a Boolean) entries in the interests/sports table. If a user 
> has an 'interest' or 'sports', he/she selects it (checkbox) and rates the 
> entry.
>
> Also the amount of entries to be selected by the user is limited to a 
> defined amount (i.e. 6 or 10) (here would be form validation best practice?)
>
>
> Am Freitag, 5. Dezember 2014 15:00:01 UTC+1 schrieb Collin Anderson:
>>
>> Hi,
>>
>> Create an admin Inline like this:
>>
>> class CustomInterestsInline(admin.TabularInline):
>>     model = CustomInterests
>>
>> class CustomUserprofileInterests(admin.ModelsAdmin):
>>     inlines = [CustomInterestsInline]
>>
>> Collin
>>
>>
>> On Thursday, December 4, 2014 5:58:31 AM UTC-5, inoyon artlover 
>> KLANGRAUSCH wrote:
>>>
>>> I am very beginner in the programming world, so please forgive my lack 
>>> of understanding...
>>> There is a CustomUserprofile in my models.py.. nothin very special about 
>>> this... 
>>>
>>> class Interests(models.Model):
>>>
>>>     RATING = [(y, y) for y in range(1, 7)]
>>>
>>>     interest = models.CharField(max_length=40)
>>>     interest_rating = models.SmallIntegerField(choices=WEIGHT)
>>>
>>>
>>> class CustomUserprofileInterests(models.Model):
>>>
>>>     user = models.OneToOneField(User)
>>>     interests = models.ManyToManyField(
>>>             Interests, through='CustomInterests',
>>>             through_fields=('custominterest', 'interest'),
>>>             null=True, blank=True)
>>>
>>>
>>> class CustomInterests(models.Model):
>>>
>>>     WEIGHT = [(y, y) for y in range(1, 7)]
>>>
>>>     interest = models.ForeignKey(Interests)
>>>     custominterest = models.ForeignKey(CustomUserprofileInterests)
>>>     rating = models.SmallIntegerField(choices=WEIGHT)
>>>  
>>>
>>> I want to accomplish a rating on each relation in the 'interests = 
>>> ManyToManyField' in my CustomUserprofile. The Interests-Model HAS to have 
>>> an OWN, self relating rating in each 'interest' entry, NOT related to the 
>>> CustomUserprofile.
>>>
>>> Startet lot of investigation and the 'through' option seems to be the 
>>> solution? Don't got it really because in my ModelForm and Admin there is NO 
>>> field to choose some 'interests' and an option to rate it.
>>> Got absolutley NO idea how to do it, would appreciate any hints.
>>>  
>>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/f7188387-7136-47b6-a357-c8ce0d53e7b2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to