1

models.py

class Account(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE, default='auth.User')
    id = models.CharField(max_length=50, unique=True)
    pw = models.CharField(max_length=200)
    nick = models.CharField(max_length=50, blank=True)
    blog = models.URLField(null=True, blank=True)
    published_date = models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        self.published_date = timezone.now()
        self.pw = make_password(self.pw)
        super(Account, self).save(*args, **kwargs)

    def __str__(self):
        return self.id

    class Meta:
        ordering = ["-published_date"]

class Task(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE, default='auth.User')
    account = models.ManyToManyField(Account)
    published_date = models.DateTimeField(default=timezone.now)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

forms.py

classAccountForm(forms.ModelForm):
    class Meta:
        model = NaverAccount
        fields = ('id', 'pw', 'nick','blog',)

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('account',)

task.html

<form action="#" class="form-horizontal" method="POST">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-success" type="submit">Save</button>

views.py

def task(request): 
    if request.method == 'POST':
        form = TaskForm(request.POST) 

        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()

            #1. id = str(from Account model)
            #2. pw = str(from Account model)

            post.save()
            form.save_m2m()
            return redirect('task')
    else:
        form = TaskForm()
    context = {'form': form}
    return render(request, 'work/task.html', context)

I'm making small task app.
I want to get model data that user select(Account) from template in view.
ex) user can select 'id1', 'id2'.
and I want to get id, pw value in view.
so I can play small task with using id, pw in view
I tried to test some code in view like print(post.account) but can't go further.

            1. id = str(from Account model)
            2. pw = str(from Account model)
cezar
  • 11,616
  • 6
  • 48
  • 84
park hq
  • 11
  • 2
  • This might be what you're looking for: https://stackoverflow.com/questions/2216974/django-modelform-for-many-to-many-fields – birophilo Dec 19 '17 at 01:05

0 Answers0