Python 如何显示多个django表单

Python 如何显示多个django表单,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我正在尝试这样做,用户可以修改他/她的个人资料 在右边(在url中附带的图片中),我们可以看到用户拥有硬币和钱包(比特币、以太坊和coinbase) 目标是,在左侧表单中,用户可以更改其数据并添加或删除硬币和钱包 我需要: 如何使用ModelMultipleEchoIceField 加载表单时,如何在输入中显示用户的数据?。e、 g:antonigalile将作为联合国名称输入 我希望我的小部件看起来像这样: 这是我的文件: 型号.py from django.db import model

我正在尝试这样做,用户可以修改他/她的个人资料

在右边(在url中附带的图片中),我们可以看到用户拥有硬币和钱包(比特币、以太坊和coinbase)

目标是,在左侧表单中,用户可以更改其数据并添加或删除硬币和钱包

我需要:

  • 如何使用ModelMultipleEchoIceField
  • 加载表单时,如何在输入中显示用户的数据?。e、 g:antonigalile将作为联合国名称输入
  • 我希望我的小部件看起来像这样:

    这是我的文件:

    型号.py

    from django.db import models
    from django.utils.timezone import now
    from django.contrib.auth.models import AbstractUser
    
    
    class Coin(models.Model):
        name = models.CharField(unique=True,max_length=50)
        url = models.CharField(max_length=200)
        transaction_fee = models.FloatField(default=0.0,blank=True)
        price = models.FloatField(default=0.0,blank=True)
        market_cap = models.IntegerField(default=0,blank=True)
        volume = models.IntegerField(default=0,blank=True)
        circulating = models.IntegerField(default=0,blank=True)
        change = models.FloatField(default=0.0,blank=True)
        def __str__(self): 
            return self.name
    
    class Wallet(models.Model):
        name = models.CharField(unique=True,max_length=50)
        url = models.CharField(max_length=200)
        coins = models.ManyToManyField(Coin)
        def __str__(self): 
            return self.name
    
    class Usuario(AbstractUser):
        name = models.CharField(max_length=12, help_text="The name must be between 2 and 12 characters")
        email = models.EmailField(max_length=60, unique=True, help_text="The email must be between 5 and 30 characters")
        password = models.CharField(max_length=78)
        change_password_code = models.CharField(blank=True,max_length=15)
        activated = models.BooleanField(default=False)
        activated_code = models.CharField(default="",max_length=15)
        ip = models.CharField(blank=True,max_length=15)
        last_login = models.DateField(default=now)
        wallets = models.ManyToManyField(Wallet)
        coins = models.ManyToManyField(Coin)
        avatar = models.CharField(blank=True,default="bitcoin.png",max_length=15)
        delete_code = models.CharField(default="",max_length=9,blank=True)
        two_factors_auth = models.BooleanField(default=False)
        two_factors_auth_code = models.CharField(default="",max_length=12,blank=True)
        fingerprint = models.CharField(max_length=64,blank=True)
    
    class EditProfileForm(forms.ModelForm):
        class Meta:
            model = Usuario
            exclude = ()
        wallets = forms.ModelMultipleChoiceField(queryset=Wallet.objects.all(),to_field_name="name")
        name = forms.CharField(label='Name')
        email = forms.EmailField(label='Email')
        two_factors_auth = forms.BooleanField()
        coins = forms.ModelMultipleChoiceField(queryset=Coin.objects.all(),to_field_name="name")
    
    forms.py

    from django.db import models
    from django.utils.timezone import now
    from django.contrib.auth.models import AbstractUser
    
    
    class Coin(models.Model):
        name = models.CharField(unique=True,max_length=50)
        url = models.CharField(max_length=200)
        transaction_fee = models.FloatField(default=0.0,blank=True)
        price = models.FloatField(default=0.0,blank=True)
        market_cap = models.IntegerField(default=0,blank=True)
        volume = models.IntegerField(default=0,blank=True)
        circulating = models.IntegerField(default=0,blank=True)
        change = models.FloatField(default=0.0,blank=True)
        def __str__(self): 
            return self.name
    
    class Wallet(models.Model):
        name = models.CharField(unique=True,max_length=50)
        url = models.CharField(max_length=200)
        coins = models.ManyToManyField(Coin)
        def __str__(self): 
            return self.name
    
    class Usuario(AbstractUser):
        name = models.CharField(max_length=12, help_text="The name must be between 2 and 12 characters")
        email = models.EmailField(max_length=60, unique=True, help_text="The email must be between 5 and 30 characters")
        password = models.CharField(max_length=78)
        change_password_code = models.CharField(blank=True,max_length=15)
        activated = models.BooleanField(default=False)
        activated_code = models.CharField(default="",max_length=15)
        ip = models.CharField(blank=True,max_length=15)
        last_login = models.DateField(default=now)
        wallets = models.ManyToManyField(Wallet)
        coins = models.ManyToManyField(Coin)
        avatar = models.CharField(blank=True,default="bitcoin.png",max_length=15)
        delete_code = models.CharField(default="",max_length=9,blank=True)
        two_factors_auth = models.BooleanField(default=False)
        two_factors_auth_code = models.CharField(default="",max_length=12,blank=True)
        fingerprint = models.CharField(max_length=64,blank=True)
    
    class EditProfileForm(forms.ModelForm):
        class Meta:
            model = Usuario
            exclude = ()
        wallets = forms.ModelMultipleChoiceField(queryset=Wallet.objects.all(),to_field_name="name")
        name = forms.CharField(label='Name')
        email = forms.EmailField(label='Email')
        two_factors_auth = forms.BooleanField()
        coins = forms.ModelMultipleChoiceField(queryset=Coin.objects.all(),to_field_name="name")
    
    form.html

    <form method="post">
         {% csrf_token %}
         <div class="form-group">
             <p> {{ edit_profile_form.name.label }} </p>
             {% render_field edit_profile_form.name class+="form-control" %}
             {{ edit_profile_form.name.errors }}
         </div>
         <div class="form-group">
             <p> {{ edit_profile_form.email.label }} </p>
             {% render_field edit_profile_form.email class+="form-control" %}
             {{ edit_profile_form.email.errors }}
         </div>
         <div class="form-group">
             <p>My Wallets</p>
             {{ edit_profile_form.wallets}}
             {{ edit_profile_form.wallets.errors }}
         </div>
         <div class="form-group">
             <p>My Coins</p>
             {{ edit_profile_form.coins }}
             {{ edit_profile_form.coins.errors }}
         </div>
         <div class="form-group">
            <p>Activate two factor authentication
            {{ edit_profile_form.two_factors_auth }}</p>
            {{ edit_profile_form.two_factors_auth.errors }}
        </div>
        <button type="submit" name="profileButton" class="btn btn-primary">Save</button>
    </form>
    
    我能做什么?
    谢谢

    这看起来像是通过点击
    +
    plus按钮在ModelMultipleChiceField中创建一个新实例的方法,就像在Django管理表单中一样?不是这样:@AntoniCobos这可能会帮助你@SancaKembang它对我不起作用,我有两个m2m字段,示例只有一个,我不知道应该将forms.py中的“解决方案”代码?admin.py中的?