Как добавить внешний ключ из нескольких доступных в модели опций для этого ключа в django? - PullRequest
0 голосов
/ 28 августа 2018

models.py

class Currency(models.Model):
    currency_name = models.CharField(max_length=250)

class Address(models.Model):
    user = models.ForeignKey(settings.common.AUTH_USER_MODEL, on_delete=models.CASCADE)
    currency_names = models.ForeignKey(Currency, on_delete=models.CASCADE)
    zebpay = models.CharField(max_length=250, blank=True, null=True)

Это модель, которую я имею для добавления адреса обмена. Каждый адрес будет сохранен в поле формы соответствующих бирж.

Существует несколько валют, таких как биткойн, эфириум и т. Д. Когда пользователь нажимает на вкладку биткойн, соответствующие биржи показывают, где в поле формы можно добавить и сохранить адрес поля. Аналогично для эфириума и других. После добавления адреса и нажатия кнопки сохранения пользователю будет показан добавленный адрес.

В админ-панели, когда администратор нажимает на адрес, он показывает 3 вещи в основном: -

  1. Пользователь, которому он принадлежит
  2. Валюта, к которой она относится
  3. Что это за обмен

Я могу сделать 1 (потому что пользователь уже вошел в систему) и 3 (адрес добавлен в поле формы), но не могу добавить обмен на сохраненный адрес.

views.py

class ZebpayView(TemplateView):
    template_name = 'currencies/addresses.html'

    def get(self, request):
        form = ZebpayForm()
        addresses = Address.objects.all().order_by('-addition_date')  
        users = User.objects.exclude(id=request.user.id) 
        friend = Friends.objects.all().first()
        friends = friend.users.all()

        context = {'form': form, 'addresses': addresses, 'users': users, 'friends': friends}
        return render(request, self.template_name, context)


    def post(self, request):
        form = ZebpayForm(request.POST)
        if form.is_valid():
            zebpay = form.save(commit=False)
            zebpay.user = request.user
            zebpay.save()
            text = form.cleaned_data['zebpay'] #data filled in form
            form = ZebpayForm()  #show blank form again after one input
            return redirect('currencies:exchanges')

        context = {'form': form, 'text': text}
        return render(request, self.template_name, context)

forms.py

class ZebpayForm(forms.ModelForm):
    zebpay = forms.CharField(widget=forms.TextInput(
        attrs={'class': 'form-control', 'placeholder': 'Address'}
    ))

    class Meta:
        model = Address
        fields = ('zebpay',)

Как добавить название валюты, по которой пользователь щелкнул и сохранил адрес в соответствующем ему поле обмена?

Кроме того, нужно ли добавлять названия валют в административной панели или вносить изменения в мою модель валюты, чтобы добавить несколько валют?

1 Ответ

0 голосов
/ 29 августа 2018

В модели валюты Сделайте ваши currency_names в качестве первичного ключа, после чего вы сможете использовать их в качестве внешнего ключа в своей модели адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...