Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
361 views
in Technique[技术] by (71.8m points)

python - How do I display videos in template from inline formset?

I have a form that includes an inline formset and I am having trouble displaying the videos in the template that were uploaded from the form. What would I add to the html line in the template as the source so that the video uploads are displayed? Thanks.

models.py:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=100, blank=True)
    last_name = models.CharField(max_length=100, blank=True)
    bio = models.TextField(max_length=150, null=True)
    phone_number = models.CharField(max_length=50, null=True, blank=True)


    def __str__(self):
        return self.user.username


class MultipleFileUpload(models.Model):
    file_uploads = models.ForeignKey(Profile, on_delete=models.CASCADE)
    video = models.FileField(null=True, blank=True, upload_to='videos')

    def __str__(self):
        return self.user.username

@receiver(post_save, sender=User)
def update_profile_signal(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()

forms.py:

class EditProfile(forms.ModelForm):
    
    class Meta:
        model = Profile

        fields = ['bio', 'phone_number']

class ProfileUpdateFormset(forms.ModelForm):
    class Meta:
        model = MultipleFileUpload

        fields = ['video']

views.py:

def edit(request, id):
    all_objects = get_object_or_404(Profile, id=id)
    ProfileFormset = inlineformset_factory(Profile, MultipleFileUpload, fields=('video',), can_order=False, can_delete=True, extra=1)
    if request.method == 'POST':
        form1 = EditProfile(request.POST or None, instance=all_objects)
        formset = ProfileFormset(request.POST, request.FILES, instance=all_objects)
        if form1.is_valid() and formset.is_valid():
            form1.save()
            formset.save()
            return HttpResponseRedirect(".")
    form1 = EditProfile(instance=all_objects)
    formset = ProfileFormset(instance=all_objects)
    context = {
            'form1': form1,
            'formset': formset,
        }
    return render(request, 'accounts/edit.html', context)

html:

<video width="350" height="200" source src="{{ user.profile.file_uploads.video.url }}" controls></video></p>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...